<!DOCTYPE html>
<!-- Copyright 2017 the V8 project authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<html lang="en">
<head>
  <!-- This will be overwritten by the v8.dev/tools exporter -->
<!-- ANALYTICS_PLACEHOLDER -->
  <meta charset="utf-8"/>
  <title>V8 Tick Processor</title>
  <link rel="stylesheet" href="profview.css">
  <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
      rel="stylesheet">

  <script src="profview.js"></script>
  <script src="profile-utils.js"></script>
</head>

<body onLoad="main.onLoad();" onResize="main.onResize();">
<h3 style="margin-top: 2px;">
  Chrome V8 profiling log processor
</h3>

<input type="file" id="fileinput" /><div id="source-status"></div>
<br>
<hr>

<div id="help">
  Usage:

  <br>
  <br>

  Record the profile:
  <pre>
  d8 --prof your-file.js
  </pre>

  Then process the file (this resolves C++ symbols and produces
  a JSON file with the profile data):

  <pre>
  &lt;v8-dir>/tools/linux-tick-processor --preprocess v8.log > v8.json
  </pre>

  To view the profile, click the <i>Choose file</i> button above and choose
  the file in the dialog box.

  <br>
  <br>
  For recording a profile from Chrome use:
  <pre>
    --no-sandbox --js-flags=--prof
  </pre>

  If running on Android use also use --single-process:
  <pre>
    --single-process --no-sandbox --js-flags=--prof
  </pre>

  If the profile is from Android pass the unstripped Chrome library to
  resolve C++ symbols when processing the file using linux-tick-processor.
  <pre>
  &lt;v8-dir>/tools/linux-tick-processor --preprocess --apk-embedded-library=./out/Release/lib.unstripped/libchrome.so v8.log > v8.json
  </pre>

  More detailed instructions for Android here: https://v8.dev/docs/profile-chromium#android
</div>

<div id="timeline" style="display : none">
  <div>
  <canvas id="timeline-canvas"/>
  </div>
  <table>
    <tr id="timeline-legend">
    </tr>
  </table>
  <div>
    Current code object: <span id="timeline-currentCode"></span>
    <button id="source-viewer-hide-button">Hide source</button>
  </div>
  <div>
    <table id="source-viewer"> </table>
  </div>
</div>

<br>

<div id="mode-bar" style="display : none">
</div>

<div id="calltree" style="display : none">
  <br>
  Attribution:
  <select id="calltree-attribution">
  </select>
  Top-level tree buckets:
  <select id="calltree-categories">
  </select>
  Sort by:
  <select id="calltree-sort">
  </select>

  <br>
  <br>

  <table id="calltree-table" class="calltree">
    <thead>
      <tr>
        <th class="numeric">Time (incl)</th>
        <th class="numeric">% of parent</th>
        <th id="calltree-table-own-time-header" class="numeric">Own time</th>
        <th>Function/category</th>
        <th class="numeric">Ticks</th>
        <th id="calltree-table-own-ticks-header" class="numeric">Own ticks</th>
      </tr>
    </thead>
    <tbody>
    </tbody>
  </table>
</div>

<div id="summary" style="display : none">
</div>

<div id="function-details" style="display : none">
</div>

<p style="font-style:italic;">
<br>
<br>
<br>
Copyright the V8 Authors - Last change to this page: 2020/12/04
</p>

</body>
</html>
